import os
import shutil
from typing import Dict, List

# 文件名映射关系
FILE_MAPPING = {
    # Python核心基础
    'python_installation.md': 'python安装.md',
    'dev_environment.md': '开发环境.md',
    'virtual_env.md': '虚拟环境.md',
    'data_types.md': '数据类型.md',
    'operators.md': '运算符.md',
    'flow_control.md': '流程控制.md',
    'function_basics.md': '函数基础.md',
    'advanced_functions.md': '高级函数.md',
    'class_object.md': '类与对象.md',
    'advanced_features.md': '高级特性.md',
    'built_in_functions.md': '内置函数.md',
    'file_operations.md': '文件操作.md',
    'datetime.md': '日期时间.md',
    'regex.md': '正则表达式.md',
    'iterator_generator.md': '迭代器与生成器.md',
    'decorator_advanced.md': '装饰器进阶.md',
    'context_manager.md': '上下文管理器.md',
    'metaprogramming.md': '元编程.md',
    
    # 数据库技术
    'mysql_postgres.md': 'mysql和postgres.md',
    'sqlalchemy.md': 'sqlalchemy教程.md',
    'mongodb.md': 'mongodb教程.md',
    'redis.md': 'redis教程.md',
    
    # Web开发
    'flask_basics.md': 'flask基础.md',
    'flask_advanced.md': 'flask进阶.md',
    'flask_restful.md': 'flask接口.md',
    'django_basics.md': 'django基础.md',
    'django_advanced.md': 'django进阶.md',
    'django_rest_framework.md': 'django接口.md',
    'restful_design.md': '接口设计.md',
    'api_security.md': '接口安全.md',
    
    # 数据处理与分析
    'numpy_basics.md': 'numpy基础.md',
    'pandas_basics.md': 'pandas基础.md',
    'data_visualization.md': '数据可视化.md',
    'data_preprocessing.md': '数据预处理.md',
    
    # 并发与异步编程
    'multithreading.md': '多线程.md',
    'multiprocessing.md': '多进程.md',
    'asyncio.md': '异步编程.md',
    'concurrency_best_practices.md': '并发最佳实践.md',
    
    # 测试与部署
    'unit_testing.md': '单元测试.md',
    'integration_testing.md': '集成测试.md',
    'cicd.md': '持续集成.md',
    'docker.md': '容器化.md',
    'production_deployment.md': '生产部署.md',
    
    # 性能优化
    'code_optimization.md': '代码优化.md',
    'profiling_tools.md': '性能分析.md',
    'memory_management.md': '内存管理.md',
    'caching_strategies.md': '缓存策略.md',
    
    # 安全编程
    'secure_coding.md': '安全编码.md',
    'cryptography.md': '加密解密.md',
    'web_security.md': 'web安全.md',
    'data_security.md': '数据安全.md',
    
    # DevOps与运维
    'automated_deployment.md': '自动部署.md',
    'containerization.md': '容器化.md',
    'cicd_pipeline.md': '持续集成.md',
    'monitoring.md': '系统监控.md',
    'logging.md': '日志管理.md',
    'service_governance.md': '服务治理.md',
    
    # 最佳实践
    'coding_standards.md': '编码规范.md',
    'project_structure.md': '项目结构.md',
    'design_patterns.md': '设计模式.md',
    'refactoring.md': '代码重构.md',
    'team_collaboration.md': '团队协作.md',
    'version_control.md': '版本控制.md',
    
    # 人工智能与机器学习
    'scikit_learn.md': '机器学习.md',
    'deep_learning.md': '深度学习.md',
    'nlp.md': '自然语言处理.md',
    'computer_vision.md': '计算机视觉.md',
    
    # 系统架构
    'architecture_principles.md': '架构原则.md',
    'high_availability.md': '高可用设计.md',
    'security_architecture.md': '安全架构.md',
    'network_architecture.md': '网络架构.md',
    
    # 云计算技术
    'cloud_basics.md': '云计算基础.md',
    'cloud_native.md': '云原生.md',
    'cloud_security.md': '云安全.md',
    
    # 项目管理
    'agile.md': '敏捷开发.md',
    'project_management.md': '项目管理.md',
    'team_management.md': '团队管理.md'
}

# 目录映射关系
DIR_MAPPING = {
    'python_core': 'python核心',
    'database': '数据库',
    'web_dev': 'web开发',
    'data_processing': '数据处理',
    'concurrent': '并发编程',
    'testing': '测试部署',
    'performance': '性能优化',
    'security': '安全编程',
    'devops': '运维管理',
    'best_practices': '最佳实践',
    'ai_ml': '人工智能',
    'architecture': '系统架构',
    'cloud': '云计算',
    'project_management': '项目管理'
}

def rename_files(workspace_path: str):
    """批量重命名文件和目录"""
    # 重命名目录
    for root, dirs, files in os.walk(workspace_path):
        for dir_name in dirs:
            old_dir_path = os.path.join(root, dir_name)
            # 检查是否需要重命名
            for old_name, new_name in DIR_MAPPING.items():
                if old_name in dir_name:
                    new_dir_name = dir_name.replace(old_name, new_name)
                    new_dir_path = os.path.join(root, new_dir_name)
                    try:
                        # 如果新目录不存在，则重命名
                        if not os.path.exists(new_dir_path):
                            os.rename(old_dir_path, new_dir_path)
                            print(f'重命名目录: {old_dir_path} -> {new_dir_path}')
                    except Exception as e:
                        print(f'重命名目录失败 {old_dir_path}: {str(e)}')
    
    # 重命名文件
    for root, dirs, files in os.walk(workspace_path):
        for file_name in files:
            if file_name.endswith('.md'):
                old_file_path = os.path.join(root, file_name)
                # 检查是否需要重命名
                for old_name, new_name in FILE_MAPPING.items():
                    if old_name in file_name:
                        new_file_name = file_name.replace(old_name, new_name)
                        new_file_path = os.path.join(root, new_file_name)
                        try:
                            # 如果新文件不存在，则重命名
                            if not os.path.exists(new_file_path):
                                os.rename(old_file_path, new_file_path)
                                print(f'重命名文件: {old_file_path} -> {new_file_path}')
                        except Exception as e:
                            print(f'重命名文件失败 {old_file_path}: {str(e)}')

if __name__ == '__main__':
    # 获取当前工作目录
    workspace_path = os.path.dirname(os.path.abspath(__file__))
    # 执行重命名
    rename_files(workspace_path) 